package offer_test_60;

//把n个骰子扔在地上，所有骰子朝上一面的点数之和为s。输入n，打印出s的所有可能的值各自的概率。
public class three_DicesProbability {
	public static void main(String[] args) {
		getDicesProb(2);
	}

	public static void getDicesProb(int num) {
		int dicesMax = 6;
		int dicesMin = 1;
		int mis = dicesMax;
		int[][] count_array = new int[num][(dicesMax - dicesMin + 1) * num];
		// 一个骰子的时候
		for (int i = 0; i < dicesMax; i++) {
			count_array[0][i] = 1;
		}
		// 循环计算,从第二个骰子开始,数组位置n存放和为n+1 的次数
		for (int i = 1; i < num; i++) {
			for (int j = dicesMin * (i + 1) - 1; j < dicesMax * (i + 1) ; j++) {
				int temp = mis;
				while (temp > 0) {
					if (j - temp >= 0) {
						count_array[i][j] += count_array[i - 1][j - temp];
					}
					temp--;
				}
			}
		}
		for (int i=0;i<count_array[num - 1].length;i++) {
			if(count_array[num-1][i]!=0){
				System.out.println("摇出"+(i+1)+"的概率为"+count_array[num-1][i]+"/"+Math.pow(dicesMax, num));
			}
		}
	}
}
